package bai.myworld.exception;

import org.slf4j.MDC;
import jakarta.servlet.http.HttpServletRequest;
import lombok.Builder;
import lombok.Data;

// ErrorResponse.java
@Data
@Builder
public class ErrorResponse {
    private String requestId;     // 请求追踪ID（从MDC获取）
    private long timestamp;       // 错误发生时间戳
    private int status;           // HTTP状态码
    private String code;          // 业务错误码（A0400）
    private String message;       // 错误信息（未国际化）
    private String path;          // 请求路径
    private Object details;       // 错误详情（如校验错误字段）

    // 从异常生成
    public static ErrorResponse from(BusinessException ex, HttpServletRequest request) {
        return ErrorResponse.builder()
                .requestId(MDC.get("traceId"))
                .timestamp(System.currentTimeMillis())
                .status(ex.getErrorCode().getHttpStatus())
                .code(ex.getErrorCode().getCode())
                .message(ex.getMessage())
                .path(request.getRequestURI())
                .build();
    }
}
